package com.zenithmind.news.pojo.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.zenithmind.common.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 用户订阅实体类
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("news_user_subscription")
@Schema(description = "用户订阅实体")
public class UserSubscription extends BaseEntity {

    /**
     * 用户ID
     */
    @Schema(description = "用户ID")
    private String userId;

    /**
     * 订阅类型（1-分类，2-标签，3-关键词，4-作者，5-来源）
     */
    @Schema(description = "订阅类型（1-分类，2-标签，3-关键词，4-作者，5-来源）")
    private Integer type;

    /**
     * 订阅目标ID或值
     */
    @Schema(description = "订阅目标ID或值")
    private String target;

    /**
     * 订阅目标名称
     */
    @Schema(description = "订阅目标名称")
    private String targetName;

    /**
     * 订阅状态（0-取消，1-订阅）
     */
    @Schema(description = "订阅状态（0-取消，1-订阅）")
    private Integer status;

    /**
     * 推送方式（JSON格式：websocket,email,sms）
     */
    @Schema(description = "推送方式（JSON格式：websocket,email,sms）")
    private String pushMethods;

    /**
     * 推送频率（1-实时，2-每小时，3-每日，4-每周）
     */
    @Schema(description = "推送频率（1-实时，2-每小时，3-每日，4-每周）")
    private Integer pushFrequency;

    /**
     * 推送时间段（JSON格式）
     */
    @Schema(description = "推送时间段（JSON格式）")
    private String pushTimeRange;

    /**
     * 是否接收推送（0-否，1-是）
     */
    @Schema(description = "是否接收推送（0-否，1-是）")
    private Integer enablePush;

    /**
     * 优先级（1-低，2-中，3-高）
     */
    @Schema(description = "优先级（1-低，2-中，3-高）")
    private Integer priority;

    /**
     * 订阅来源（1-手动，2-推荐，3-系统）
     */
    @Schema(description = "订阅来源（1-手动，2-推荐，3-系统）")
    private Integer source;

    /**
     * 订阅权重（用于推荐算法）
     */
    @Schema(description = "订阅权重（用于推荐算法）")
    private Double weight;
}
